package com.distribute.rest.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.distribute.pojo.DbItemCat;
import com.distribute.rest.pojo.CatNode;
import com.distribute.rest.pojo.CatResult;
import com.distribute.rest.service.ItemCatService;
import com.distribute.mapper.DbItemCatMapper;
import com.distribute.pojo.DbItemCat;
import com.distribute.pojo.DbItemCatExample;
import com.distribute.pojo.DbItemCatExample.Criteria;
/**
 * 
    * @ClassName: ItemCatServiceImpl
    * @Description:宠物分类列表的获取service
    * 该服务服务于前后台：后台结构为easyui的异步树控件，页面中获取的是每个节点的name，前台结构本是一种类似淘宝的商品分类选择（hover后获取更深一层分类），但是后来简化了，直接获取最深处分类，前端中需
    * 需要提取的是name和url。所以catnode中包含的属性有name，url以及深一层的列表（递归）
    * catresult中只是封装了一个list
    * @author IsZxm
    * @date 2018年4月8日
    *
 */
@Service
public class ItemCatServiceImpl implements ItemCatService {

	@Autowired
	private DbItemCatMapper itemCatMapper;
	
	

	@Override
	public CatResult getCItemCatList() {
		
		CatResult catResult = new CatResult();
		//查询分类列表
		catResult.setData(getCatList(2));
		return catResult;
	}
	@Override
	public CatResult getDItemCatList() {
		
		CatResult catResult = new CatResult();
		//查询分类列表
		catResult.setData(getCatList(1));
		return catResult;
	}
	
	
	@Override
	public CatResult getItemCatList() {
		
		CatResult catResult = new CatResult();
		//查询分类列表
		catResult.setData(getCatList(0));
		return catResult;
	}
	
	/**
	 * 查询分类列表
	 * <p>Title: getCatList</p>
	 * <p>Description: </p>
	 * @param parentId
	 * @return
	 */
	private List<?> getCatList(long parentId) {
		//创建查询条件
		DbItemCatExample example = new DbItemCatExample();
		Criteria criteria = example.createCriteria();
		criteria.andParentIdEqualTo(parentId);
		//执行查询
		List<DbItemCat> list = itemCatMapper.selectByExample(example);
		//返回值list
		List resultList = new ArrayList<>();
		//向list中添加节点
		int count = 0;
		for (DbItemCat DbItemCat : list) {
			//判断是否为父节点
			if (DbItemCat.getIsParent()) {
				CatNode catNode = new CatNode();
				if (parentId == 0) {
					catNode.setName("<a href='search.html?q='+DbItemCat.getName()>"+DbItemCat.getName()+"</a>");
				} else {
					catNode.setName(DbItemCat.getName());
				}
				catNode.setUrl("search.html?q="+DbItemCat.getName());
				catNode.setItem(getCatList(DbItemCat.getId()));
				
				resultList.add(catNode);
				count ++;
				//此处未用到下述判断：因为前端按照宠物猫分类列表，宠物狗列表的方式获取分类列表
				//第一层只取14条记录
				if (parentId == 0 && count >=14) {
					break;
				}
				//第一层只取14条记录
				if (parentId == 1 && count >=5) {
					break;
				}
				//第一层只取14条记录
				if (parentId == 2 && count >=4) {
					break;
				}
			//如果是叶子节点
			} else {
				resultList.add("search.html?q="+DbItemCat.getName()+'|' + DbItemCat.getName());
			}
		}
		return resultList;
	}

}
